/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cpal.entrenamiento.common.logger;

/**
 *
 * @author omar
 */
public interface Log {

    /**
     * <p> Is debug logging currently enabled? </p>
     *
     * <p> Call this method to prevent having to perform expensive operations
     * (for example, <code>String</code> concatenation)
     * when the log level is more than debug. </p>
     *
     * @return true if debug is enabled in the underlying logger.
     */
    public boolean isDebugEnabled();

    /**
     * <p> Is error logging currently enabled? </p>
     *
     * <p> Call this method to prevent having to perform expensive operations
     * (for example, <code>String</code> concatenation)
     * when the log level is more than error. </p>
     *
     * @return true if error is enabled in the underlying logger.
     */
    public boolean isErrorEnabled();

    /**
     * <p> Is fatal logging currently enabled? </p>
     *
     * <p> Call this method to prevent having to perform expensive operations
     * (for example, <code>String</code> concatenation)
     * when the log level is more than fatal. </p>
     *
     * @return true if fatal is enabled in the underlying logger.
     */
    public boolean isFatalEnabled();

    /**
     * <p> Is info logging currently enabled? </p>
     *
     * <p> Call this method to prevent having to perform expensive operations
     * (for example, <code>String</code> concatenation)
     * when the log level is more than info. </p>
     *
     * @return true if info is enabled in the underlying logger.
     */
    public boolean isInfoEnabled();

    /**
     * <p> Is trace logging currently enabled? </p>
     *
     * <p> Call this method to prevent having to perform expensive operations
     * (for example, <code>String</code> concatenation)
     * when the log level is more than trace. </p>
     *
     * @return true if trace is enabled in the underlying logger.
     */
    public boolean isTraceEnabled();

    /**
     * <p> Is warn logging currently enabled? </p>
     *
     * <p> Call this method to prevent having to perform expensive operations
     * (for example, <code>String</code> concatenation)
     * when the log level is more than warn. </p>
     *
     * @return true if warn is enabled in the underlying logger.
     */
    public boolean isWarnEnabled();

    /**
     * <p> Log a message with trace log level. </p>
     *
     * @param message log this message
     */
    public void trace(Object... message);

    /**
     * <p> Log an error with trace log level. </p>
     *
     * @param message log this message
     * @param t log this cause
     */
    public void trace(Object message, Throwable t);

    public void debug(Object message);

    public void debug(Object serviceOperation, Object message);

    public void debug(Object status, Object errorId, Object errorDesc, Object additionalInfo);

    public void debug(Object serviceOperation, Object requestId, Object status, Object errorId, Object errorDesc, Object additionalInfo);

    public void debug(Object serviceOperation, Object status, Object errorId, Object errorDesc, Object additionalInfo);

    public void debug(Object message, Throwable t);

    /**
     * <p> Log a message with info log level. </p>
     *
     * @param message log this message
     */
    public void info(Object... message);

    /**
     * <p> Log an error with info log level. </p>
     *
     * @param message log this message
     * @param t log this cause
     */
    public void info(Object message, Throwable t);

    /**
     * <p> Log a message with warn log level. </p>
     *
     * @param message log this message
     */

    public void warn(Object serviceOperation, Object errorId, Object additionalInfo);

    public void warn(Object serviceOperation, Object status, Object errorId, Object errorDesc, Object additionalInfo);

    public void warn(Object serviceOperation, Object errorId, Object additionalInfo, Throwable t);

    /**
     * <p> Log an error with warn log level. </p>
     *
     * @param message log this message
     * @param t log this cause
     */
    public void warn(Object message, Throwable t);

    public void warn(Object serviceOperation, Object message);

    /**
     * <p> Log an error with error log level. </p>
     *
     * @param message log this message
     * @param errorId log this error id
     * @param additionalInfo log this additional information
     */
    public void error(Object message, Object errorId, Object additionalInfo);

    /**
     * <p> Log an error with error log level. </p>
     *
     * @param status log this status
     * @param message log this message
     * @param errorId log this error id
     * @param additionalInfo log this additional information
     */
    public void error(Object status, Object errorId, Object errorDesc, Object additionalInfo);

    /**
     * <p> Log an error with error log level. </p>
     *
     * @param message log this message
     * @param t log this cause
     */
    public void error(Object message, Throwable t);

    /**
     * <p> Log an error with error log level. </p>
     *
     * @param message log this message
     * @param errorId log this error id
     * @param additionalInfo log this additional information
     * @param t log this cause
     */
    public void error(Object message, Object errorId, Object additionalInfo, Throwable t);

    public void error(Object serviceOperation, Object status, Object errorId, Object errorDesc, Object additionalInfo, Throwable t);

    public void error(Object serviceOperation, Object status, Object errorId, Object additionalInfo, Throwable t);

    

    /**
     * <p> Log a message with fatal log level. </p>
     *
     * @param message log this message
     */
    public void fatal(Object... message);

    /**
     * <p> Log an error with fatal log level. </p>
     *
     * @param message log this message
     * @param t log this cause
     */
    public void fatal(Object message, Throwable t);
}
